#pragma once

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

typedef int LDataType;

typedef struct ListNode
{
	struct ListNode* next;
	struct ListNode* prev;
	LDataType val;
}ListNode;


ListNode* ListNodeInit();

void ListNodePrint(ListNode* phead);

void ListNodeDestroy(ListNode* phead);

ListNode* CreateListNode(LDataType x);

void ListNodeInsert(ListNode* pos, LDataType x);

void ListNodePushBack(ListNode* phead, LDataType x);

void ListNodePushFront(ListNode* phead, LDataType x);

void ListNodePopBack(ListNode* phead);

void ListNodePopFront(ListNode* phead);

void ListNodeErase(ListNode* pos);

ListNode* ListNodeFind(ListNode* phead, LDataType x);

